package com.lhkj.ct.meta.modules.questionnaire.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.lhkj.ct.base.model.dto.PageQuery;
import com.lhkj.ct.base.mybatis.extension.service.BatchHandleService;
import com.lhkj.ct.base.mybatis.extension.service.IPageService;
import com.lhkj.ct.meta.modules.psychology.model.dto.GaugeAllotDto;
import com.lhkj.ct.meta.modules.psychology.model.vo.ViewAnswerVo;
import com.lhkj.ct.meta.modules.questionnaire.model.entity.TblQnrAllotRecord;
import com.lhkj.ct.meta.modules.questionnaire.model.vo.QnrStatisticsVo;

import java.util.Map;

/**
 * <p>
 * 问卷分配记录 服务类
 * </p>
 *
 * @author jobob
 * @since 2023-10-26
 */
public interface QnrAllotRecordService extends BatchHandleService<TblQnrAllotRecord>, IPageService<TblQnrAllotRecord> {

    /**
     * 问卷分配
     * @param allotDto
     */
    boolean allot(final GaugeAllotDto allotDto);

    /**
     * 问卷分配记录
     */
    IPage<TblQnrAllotRecord> selectAllotPage(TblQnrAllotRecord record, PageQuery pageQuery);

    /**
     * 根据分配记录查询问卷信息，题目，和作答进度
     * @param allotId 分配记录
     * @param validateSelf 是否校验本人作答
     */
    Map<String, Object> selectQnrWithQuestionsByAllotId(String allotId, boolean validateSelf);

    /**
     * 问卷统计
     */
    IPage<QnrStatisticsVo> statistics(PageQuery pageQuery);

    /**
     * 查看作答结果
     */
    ViewAnswerVo viewAnswer(String allotId);
}
